/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package futco.patrones.syscand.dao.implementacion;

import futco.patrones.syscand.dao.PropuestaDAO;
import futco.patrones.syscand.entidades.Propuesta;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;

/**
 *
 * @author casewaredes03
 */
public class PropuestaDAOImp extends AbstracDAOImp implements PropuestaDAO {

    @PersistenceContext
    private EntityManager em;

    @Override
    public void registrar(Propuesta entidad) {
        if (log.isDebugEnabled()) {
            log.debug("Propuesta ===>" + entidad);
        }
        em.persist(entidad);
    }

    @Override
    public void guardar(Propuesta entidad) {
        if (log.isDebugEnabled()) {
            log.debug("Propuesta ===>" + entidad);
        }
        if (entidad.getSecuenacia() != null) {
            this.actualizar(entidad);
        } else {
            this.registrar(entidad);
        }
    }

    @Override
    public void actualizar(Propuesta entidad) {
        if (log.isDebugEnabled()) {
            log.debug("Propuesta ===>" + entidad);
        }
        em.merge(entidad);
    }

    @Override
    public void eliminar(Propuesta entidad) {
        if (log.isDebugEnabled()) {
            log.error("Propuesta ===>" + entidad);
        }
        em.remove(em.merge(entidad));

    }

    @Override
    public List<Propuesta> buscarTodo() {
        TypedQuery<Propuesta> query = em.createNamedQuery("Propuesta.findAll", Propuesta.class);
        return query.getResultList();


    }

    @Override
    public Propuesta buscar(Object id) {
        if (log.isDebugEnabled()) {
            log.error("id ===>" + id);
        }
        TypedQuery<Propuesta> query = em.createNamedQuery("Encuesta.findBySecuencia", Propuesta.class);
        query.setParameter("secuenacia", id);
        return query.getSingleResult();
    }
}
